The present invention relates to the field of composite application development. More specifically, the present invention relates to versioning of service components for composite application development.
In distributed computing, source code is written, deployed and executed by various teams operating in various geographies using different software development and execution environments. The source code, also known as a component, is owned and managed by the developers of the source code. These components are used to develop large-scale business applications using mutually decided communication protocol that is either standard or proprietary. This new paradigm of distributed computing resulted in the introduction of the concept of composite or hybrid applications.
A composite application is built by integrating various pre-built service components using standardized service interfaces. The use of pre-built service components reduces the effort in designing, coding and testing new service components. Therefore, the success of the composite application development is based on the availability of rich catalog of pre-built configurable components. Further, the concept of Service Oriented Architecture (SOA) is used for composite application development. In SOA, the software components are exposed as service components. Service components include configurable software components, the services they expose and the references they make to other service components. The service components include declarations about their promise regarding adherence to publically available service contracts containing service policies.
To develop a composite application, a catalog of pre-built service components and service interfaces is used to select the desired service components and service interfaces. Thereafter, the selected service components and service interfaces are integrated based on their mutual compatible service interfaces. Further, Service Component Architecture (SCA) is an open standard that enables the integration of various service components using various protocols for developing composite applications.
The service components built for developing composite applications have various service implementations that are provided at different Qualify of Service (QoS) and maturity levels. Further, these components include service interfaces that exist in multiple versions. The service implementations are compatible with various versions of the service interfaces. Furthermore, the same service interface denotes different semantics depending on the business context. Therefore, there are multiple service implementations corresponding to various business contexts that employ the same service interface. In addition, the service implementation can be configured with different properties. Therefore, a software component built for the development of a service component results in multiple service components based on the service implementation configurations.
The composite application runtimes and service registries implementations do not cater to the versioning requirements of the components, service interfaces and business functionalities, as described above. These also do not enable composite application development based on specific business context, the QoS requirements, service interface versions and component implementation maturity levels. Further, these also do not enable compound versioning-based publish, find and bind of participating services in a composite application based on the factors mentioned above.
In light of the above discussion, there is need for a method, system and computer program product for an efficient versioning scheme for defining compound versions of the composite applications. In addition, such a method should enable the development of a composite application based on the requirements of the service interface, the business context, the QoS, the component implementation, and the software component.